using System;
using System.Collections.Generic;
using System.Text;

using Atom.Data.Base;

namespace Atom.Data.ManagerObjects
{
    public interface IManagerFactory
    {
		// Get Methods
		IDSummaryInfoManager GetDSummaryInfoManager();
		IDSummaryInfoManager GetDSummaryInfoManager(INHibernateSession session);
		IHBalanceRecordManager GetHBalanceRecordManager();
		IHBalanceRecordManager GetHBalanceRecordManager(INHibernateSession session);
		IHLeavehosRecordManager GetHLeavehosRecordManager();
		IHLeavehosRecordManager GetHLeavehosRecordManager(INHibernateSession session);
		IHLeavehoschargeDetailManager GetHLeavehoschargeDetailManager();
		IHLeavehoschargeDetailManager GetHLeavehoschargeDetailManager(INHibernateSession session);
		IHLeavehosleechdomDetailManager GetHLeavehosleechdomDetailManager();
		IHLeavehosleechdomDetailManager GetHLeavehosleechdomDetailManager(INHibernateSession session);
		IIBalanceRecordManager GetIBalanceRecordManager();
		IIBalanceRecordManager GetIBalanceRecordManager(INHibernateSession session);
		ITPatientInfoManager GetTPatientInfoManager();
		ITPatientInfoManager GetTPatientInfoManager(INHibernateSession session);
    }

    public class ManagerFactory : IManagerFactory
    {
        #region Constructors

        public ManagerFactory()
        {
        }

        #endregion

        #region Get Methods

		public IDSummaryInfoManager GetDSummaryInfoManager()
        {
            return new DSummaryInfoManager();
        }
		public IDSummaryInfoManager GetDSummaryInfoManager(INHibernateSession session)
        {
            return new DSummaryInfoManager(session);
        }
		public IHBalanceRecordManager GetHBalanceRecordManager()
        {
            return new HBalanceRecordManager();
        }
		public IHBalanceRecordManager GetHBalanceRecordManager(INHibernateSession session)
        {
            return new HBalanceRecordManager(session);
        }
		public IHLeavehosRecordManager GetHLeavehosRecordManager()
        {
            return new HLeavehosRecordManager();
        }
		public IHLeavehosRecordManager GetHLeavehosRecordManager(INHibernateSession session)
        {
            return new HLeavehosRecordManager(session);
        }
		public IHLeavehoschargeDetailManager GetHLeavehoschargeDetailManager()
        {
            return new HLeavehoschargeDetailManager();
        }
		public IHLeavehoschargeDetailManager GetHLeavehoschargeDetailManager(INHibernateSession session)
        {
            return new HLeavehoschargeDetailManager(session);
        }
		public IHLeavehosleechdomDetailManager GetHLeavehosleechdomDetailManager()
        {
            return new HLeavehosleechdomDetailManager();
        }
		public IHLeavehosleechdomDetailManager GetHLeavehosleechdomDetailManager(INHibernateSession session)
        {
            return new HLeavehosleechdomDetailManager(session);
        }
		public IIBalanceRecordManager GetIBalanceRecordManager()
        {
            return new IBalanceRecordManager();
        }
		public IIBalanceRecordManager GetIBalanceRecordManager(INHibernateSession session)
        {
            return new IBalanceRecordManager(session);
        }
		public ITPatientInfoManager GetTPatientInfoManager()
        {
            return new TPatientInfoManager();
        }
		public ITPatientInfoManager GetTPatientInfoManager(INHibernateSession session)
        {
            return new TPatientInfoManager(session);
        }
        
        #endregion
    }
}
